home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / csdudes.exe / CSCCTR.CPP < prev    next >
Text File  |  1992-06-25  |  8KB  |  283 lines

  1. // Personnell DataBase
  2. // (C) Copyright 1992 Campbell Soup Company by Andrew Frantz
  3. // CScctr.CPP
  4. // contains the dialog and paradox engine source for costctr.db
  5. //    CIS --- 70712,3547
  6. // ====================================================================
  7. #include "csdudes.hpp"
  8. // ====================================================================
  9. void PXCostCtr::PXCostCtr()
  10. {
  11.     char path[80];
  12.     strcpy(path, (char *) DATAPATH);
  13.     strcat(path, "\\");
  14.     strcat(path, "COSTCTR");
  15.     int err;
  16.  
  17.     if((err = open(path, NULL)) != PXSUCCESS)
  18.     {
  19.         cerr << PXErrMsg(err) << endl;
  20.         cerr << "Hit a Key" << endl;
  21.         getch();
  22.         exit(0);
  23.     }
  24.     InitFields();
  25.     if(recfirst())
  26.     {
  27.         cerr << "Error getting first record" << endl;
  28.         cerr << "Hit a Key" << endl;
  29.         getch();
  30.         exit(0);
  31.     }
  32. }
  33. // =====================================================================
  34. int PXCostCtr::InitFields()
  35. {
  36.     int   i = 0;
  37.  
  38.     fldptr [i++] = &CostCtr;
  39.     fldptr [i++] = &CCDescription;
  40.     fldptr [i++] = &ManagerUserName;
  41.     fldptr [i] = NULL;
  42.  
  43.     CostCtr.setinfo(*this, "CostCtr");
  44.     CCDescription.setinfo(*this, "CCDescription");
  45.     ManagerUserName.setinfo(*this, "ManagerUserName");
  46.     return (PXSUCCESS);
  47. }
  48. // =====================================================================
  49. void PXCostCtr::AddRecord(CostCtrXferBuffer *data)
  50. {
  51.     CostCtr                =    data->CostCtr;
  52.     CCDescription        =    data->CCDescription;
  53.     ManagerUserName    =    data->ManagerUserName;
  54.  
  55.     int err;
  56.     if((err = recappend()) != PXSUCCESS)
  57.     {
  58.         messageBox(PXErrMsg(err), mfError);
  59.     }
  60. }
  61. // =====================================================================
  62. void PXCostCtr::ChangeRecord(CostCtrXferBuffer *data)
  63. {
  64.     CostCtr                =    data->CostCtr;
  65.     CCDescription        =    data->CCDescription;
  66.     ManagerUserName    =    data->ManagerUserName;
  67.  
  68.     recupdate();            // error handling done in recupdate()
  69. }
  70. // =====================================================================
  71. int PXCostCtr::FindRecord(char *data)
  72. {
  73.     int err = CostCtr.search(data, SEARCHFIRST);
  74.     
  75.     return(err);
  76. }
  77. // =====================================================================
  78. CostCtrXferBuffer PXCostCtr::DisplayRecord()
  79. {
  80.     CostCtrXferBuffer data;
  81.  
  82.     recget();
  83.  
  84.     CostCtr.get();
  85.     CCDescription.get();
  86.     ManagerUserName.get();
  87.  
  88.     strncpy(data.CostCtr, CostCtr, sizeof(data.CostCtr));
  89.     strncpy(data.CCDescription, CCDescription, sizeof(data.CCDescription));
  90.     strncpy(data.ManagerUserName, ManagerUserName, sizeof(data.ManagerUserName));
  91.  
  92.     return(data);
  93. }
  94. // ====================================================================
  95. TCostCtrDlg::TCostCtrDlg(const char *title, int type)
  96.     :    TDialog(  TRect( 0, 0, 80, 23), title ),
  97.         TWindowInit(&TCostCtrDlg::initFrame)
  98. {
  99.     DlgType=type;
  100.  
  101.     // initialize the struct to 0
  102.     cmClear();  // init dlg structs
  103.  
  104.     insert(new TInputLine(TRect(25,4,31,5), 4));
  105.     insert(new TInputLine(TRect(25,6,53,7), 26));
  106.     insert(new TInputLine(TRect(25,8,40,9), 13));
  107.  
  108.     insert(new TStaticText(TRect(6,4,13,5), "CostCtr"));
  109.     insert(new TStaticText(TRect(6,6,17,7), "Description"));
  110.     insert(new TStaticText(TRect(6,8,21,9), "ManagerUserName"));
  111.  
  112.     switch(DlgType)
  113.     {
  114.         case AddDlg:
  115.             insert( new TButton(TRect(3,16,13,18), "~A~dd", cmAddRec, bfDefault | bfBroadcast));
  116.             insert(new TButton(TRect(15,16,25,18), "~C~lear", cmClearRec, bfNormal | bfBroadcast));
  117.             break;
  118.         case EditDlg:
  119.             insert(new TButton(TRect(3,16,13,18), "~F~ind", cmFindRec, bfDefault | bfBroadcast));
  120.             insert(new TButton(TRect(15,16,25,18), "~C~hange", cmChangeRec, bfNormal | bfBroadcast));
  121.             insert(new TButton(TRect(28,16,40,18), "~D~elete", cmDeleteRec, bfNormal | bfBroadcast));
  122.             insert(new TButton(TRect(3,19,13,21), "~N~ext", cmNextRec, bfNormal | bfBroadcast));
  123.             insert(new TButton(TRect(15,19,25,21), "~P~rev", cmPrevRec, bfNormal | bfBroadcast));
  124.             insert(new TButton(TRect(28,19,39,21), "Fi~r~st", cmFirstRec, bfNormal | bfBroadcast));
  125.             insert(new TButton(TRect(41,19,51,21), "~L~ast", cmLastRec, bfNormal | bfBroadcast));
  126.             setDlgStructs();
  127.             break;
  128.         default:
  129.             break;
  130.     }
  131.  
  132.     selectNext(False);
  133. }
  134. // =====================================================================
  135. void TCostCtrDlg::handleEvent(TEvent& event)
  136. {
  137.     TDialog::handleEvent(event);
  138.     if( event.what == evBroadcast )
  139.     {
  140.         switch( event.message.command )
  141.         {
  142.             case cmAddRec:
  143.                 cmAdd();
  144.                 break;
  145.             case cmClearRec:
  146.                 cmClear();
  147.                 break;
  148.             case cmFirstRec:
  149.                 cmFirst();
  150.                 break;
  151.             case cmPrevRec:
  152.                 cmPrev();
  153.                 break;
  154.             case cmLastRec:
  155.                 cmLast();
  156.                 break;
  157.             case cmNextRec:
  158.                 cmNext();
  159.                 break;
  160.             case cmChangeRec:
  161.                 cmChange();
  162.                 break;
  163.             case cmDeleteRec:
  164.                 cmDelete();
  165.                 break;
  166.             case cmFindRec:
  167.                 cmFind();
  168.                 break;
  169.             case cmsTestQuit:
  170.                 cmTestQuit();
  171.                 break;
  172.             default:
  173.                 return;
  174.         }
  175.         clearEvent( event );         // clear event after handling
  176.     }
  177. }
  178. // =====================================================================
  179. void TCostCtrDlg::cmTestQuit()
  180. {
  181.     switch(DlgType)
  182.     {
  183.         case EditDlg:
  184.             if(messageBox(mfYesButton | mfNoButton,
  185.             "Do You Need To Save The Changes To\nThis Record ??") == cmYes)
  186.             {
  187.                 cmChange();
  188.             }
  189.             break;
  190.         case AddDlg:
  191.             if(messageBox(mfYesButton | mfNoButton,
  192.             "Do You Wish To Save This Record ??") == cmYes)
  193.             {
  194.                 cmAdd();
  195.             }
  196.             break;
  197.         default:
  198.             break;
  199.     }
  200. }
  201. // =====================================================================
  202. void TCostCtrDlg::cmAdd()
  203. {
  204.     getData((void *) &costCtrXferStruct);
  205.     TPersonnellApp::CostCtrDB->AddRecord(&costCtrXferStruct);
  206.     cmClear();
  207. }
  208. // =====================================================================
  209. void TCostCtrDlg::cmClear()
  210. {
  211.     memset(&costCtrXferStruct, 0x0, sizeof costCtrXferStruct);
  212.     setData((void *) &costCtrXferStruct);
  213.     memset(&tempCostCtr, 0x0, sizeof tempCostCtr);
  214. }
  215. // =====================================================================
  216. void TCostCtrDlg::cmChange()
  217. {
  218.     getData((void *) &costCtrXferStruct);
  219.     TPersonnellApp::CostCtrDB->ChangeRecord(&costCtrXferStruct);
  220.     setDlgStructs();
  221. }
  222. // =====================================================================
  223. void TCostCtrDlg::cmDelete()
  224. {
  225.     if(messageBox(mfYesButton | mfNoButton,
  226.         "Warning You Are About To Delete\nThis Record !!\nAre You Sure ??") == cmYes)
  227.     {
  228.         TPersonnellApp::CostCtrDB->recdelete();
  229.         setDlgStructs();
  230.     }
  231. }
  232. // ====================================================================
  233. void TCostCtrDlg::cmFirst()
  234. {
  235.     checkDlg();
  236.     TPersonnellApp::CostCtrDB->recfirst();
  237.      setDlgStructs();
  238. }
  239. // ====================================================================
  240. void TCostCtrDlg::cmLast()
  241. {
  242.     checkDlg();
  243.     TPersonnellApp::CostCtrDB->reclast();
  244.      setDlgStructs();
  245. }
  246. // ====================================================================
  247. void TCostCtrDlg::cmPrev()
  248. {
  249.     checkDlg();
  250.     TPersonnellApp::CostCtrDB->recprev();
  251.     setDlgStructs();
  252. }
  253. // ====================================================================
  254. void TCostCtrDlg::cmNext()
  255. {
  256.     checkDlg();
  257.     TPersonnellApp::CostCtrDB->recnext();
  258.      setDlgStructs();
  259. }
  260. // =====================================================================
  261. void TCostCtrDlg::cmFind()
  262. {
  263.     int err;
  264.     char findvar[25];
  265.     
  266.     strcpy(findvar, "");
  267.     checkDlg();
  268.     if(inputBox("Find Cost Ctr", "Enter Cost Ctr:" ,findvar, 4) == cmOK)
  269.     {
  270.         if((err = TPersonnellApp::CostCtrDB->FindRecord(findvar)) != PXSUCCESS)
  271.             messageBox(PXErrMsg(err), mfError);
  272.     }
  273.     setDlgStructs();
  274. }
  275. // =====================================================================
  276. void TCostCtrDlg::setDlgStructs()
  277. {
  278.     tempCostCtr = costCtrXferStruct = TPersonnellApp::CostCtrDB->DisplayRecord();
  279.     setData((void *) &costCtrXferStruct);
  280. }
  281. // =====================================================================
  282.  
  283.